home *** CD-ROM | disk | FTP | other *** search
- #include <io.h>
- #include <stdio.h>
- #include <assert.h>
-
- void xio();
-
- int main()
- {
- xio();
- }
-
- void xio()
- {
- int fd,buflen;
- char buf1[100], buf2[100];
-
- printf("==> starting xio <==\n");
-
- // --- test the ZFILEIO functions
- // ------------------------------
- remove("testdata.txt");
-
- // --- first we test the creat system call
- assert((fd=creat("testdata.txt"))!=EOF);
- assert(fd>4); // --- 0..4 are DOS standard streams
-
- strcpy(buf1,"ground control to major tom");
- assert(write(fd,buf1,strlen(buf1))==strlen(buf1));
- assert(close(fd)==0);
-
- // --- now we test open system call, and creat for pre-existing file
- assert((fd=open("testdata.txt",O_RDONLY))!=EOF);
- assert(fd>4); // --- 0..4 are DOS standard streams
- assert((buflen=strlen(buf1))>0);
- assert(read(fd,buf1,100)==buflen);
- assert(close(fd)==0);
-
- assert((fd=open("testdata.txt",O_RDWR))!=EOF);
- assert(fd>4); // --- 0..4 are DOS standard streams
- assert(read(fd,buf1,100)==buflen);
- strcpy(buf2,"\r\nzowie bowie\tziggy marley\r\n");
- assert(write(fd,buf2,strlen(buf2))==strlen(buf2));
- assert(close(fd)==0);
-
- assert((fd=open("testdata.txt",O_RDWR))!=EOF);
- assert(fd>4); // --- 0..4 are DOS standard streams
- assert(read(fd,buf1,100)==buflen+strlen(buf2));
- assert(strncmp(buf1,"ground control to major tom\r\nzowie bowie\tziggy marley\r\n",buflen+strlen(buf2))==0);
- assert(close(fd)==0);
-
- assert((fd=open("testdata.txt",O_WRONLY))!=EOF);
- assert(fd>4); // --- 0..4 are DOS standard streams
- assert(read(fd,buf1,100)==EOF);
- assert(close(fd)==0);
-
- // --- now we test creat for pre-existing file
- assert((fd=creat("testdata.txt"))!=EOF);
- assert(fd>4); // --- 0..4 are DOS standard streams
-
- strcpy(buf1,"anemone is the enemy");
- assert(write(fd,buf1,strlen(buf1))==strlen(buf1));
- assert(close(fd)==0);
-
- // --- we have now tested all types of open, creat, close, read, write
- // --- let us try lseek
- assert((fd=open("testdata.txt",O_RDWR))!=EOF);
- assert(fd>4); // --- 0..4 are DOS standard streams
- buflen=strlen("anemone is the enemy");
- assert(read(fd,buf1,100)==buflen);
-
- assert((int)lseek(fd,0L,SEEK_CUR)==buflen);
- assert((int)lseek(fd,0L,SEEK_END)==buflen);
- assert((int)lseek(fd,0L,SEEK_SET)==0);
- assert((int)lseek(fd,5L,SEEK_SET)==5);
- assert(close(fd)==0);
-
- assert(remove("testdata.txt")==0); // --- now you see it
- assert(remove("testdata.txt")==-1); // --- now you don't
- printf("passed open/close/creat/read/write/lseek/remove...\n");
-
- printf("==> finished xio <==\n");
- return;
- }
-